package com.hbnu.iostream;

import java.io.*;

/**
 * 需求：使用字节输入流读取指定文件中的内容，并输出到控制台中
 *
 * @author kittychen
 * @since 2025-10-11 17:00
 */
public class InputStreamDemo {
    public static void main(String[] args) {
        // 1、准备文件对象
        String path = "C:" + File.separator + "Users" + File.separator + "Administrator"
                + File.separator + "Desktop" + File.separator + "kittychen"
                + File.separator + "class2311" + File.separator + "test.txt";
        File file = new File(path);

        // 2、字节输入流
        InputStream inputStream = null;
        try {
            inputStream = new FileInputStream(file);

            // 3、读取文件内容
            // byte[] bytes = new byte[(int)file.length())];
            byte[] bytes = new byte[1024];   // 定义一个字节数组，用于存储读取到的内容
            // int len = inputStream.read(bytes); // 读取文件内容，返回读取到的字节数

            // 循环读取文件内容(一个字节一个字节的读)
            int len = 0;  // 读取到的字节数
            int temp;  // 每次读取到的字节
            while ((temp = inputStream.read()) != -1) {
                bytes[len++] = (byte) temp;
            }

            System.out.println(new String(bytes, 0, len));
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 4、关闭流资源
            try {
                if (inputStream != null) {
                    inputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
